package com.project.domain.vo;

import com.baomidou.mybatisplus.annotation.TableField;
import com.common.annotation.Excel;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.framework.config.BigDecimalSerializer;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.math.BigDecimal;

@Data
public class ProListInfoVo {

    private String Id;

    private String proClass;

    /** 批准号 */
    @Excel(name = "批准号")
    private String authorizeCode;

    /** 项目编号 */
    @Excel(name = "项目编号")
    private String code;

    @Excel(name = "合同编号")
    private String codeHt;

    /** 项目名称 */
    @Excel(name = "项目名称")
    private String proName;

    /** 项目名称 */
    @Excel(name = "合同名称")
    private String proNameHt;

    /** 负责人id */
    private String chargerCode;

    /** 负责人 */
    @Excel(name = "负责人")
    private String chargerName;

    /** 负责人类型 */
    @Excel(name = "负责人类型")
    private String chargerTypeName;

    /** 批准经费、总经费、合同经费 */
    @Excel(name = "批准经费（万元）")
    @JsonSerialize(using = BigDecimalSerializer.class)
    private BigDecimal feeAuthorize = new BigDecimal(0);

    @Excel(name = "项目总经费（万元）")
    @JsonSerialize(using = BigDecimalSerializer.class)
    private BigDecimal feeAuthorizeZx = new BigDecimal(0);

    @Excel(name = "合同经费（万元）")
    @JsonSerialize(using = BigDecimalSerializer.class)
    private BigDecimal feeAuthorizeHt = new BigDecimal(0);

    /** 学校资助经费 */
    @Excel(name = "学校资助经费（万元）")
    @JsonSerialize(using = BigDecimalSerializer.class)
    private BigDecimal attachFee = new BigDecimal(0);

    /** 项目分类id */
    private String projectTypeCode;

    /** 项目分类 */
    @Excel(name = "项目分类")
    private String projectTypeName;

    @Excel(name = "合同类别")
    private String projectTypeNameHt;

    /** 立项日期、签订日期*/
    @Excel(name = "立项日期")
    private String authorizeDate;

    @Excel(name = "签订日期")
    private String authorizeDateHt;

    /** 所属单位id */
    private String unitId;

    /** 所属单位 */
    @Excel(name = "所属单位")
    private String unitName;

    /** 负责人电话 */
    @Excel(name = "负责人电话")
    private String chargerPhone;

    /** 负责人邮箱 */
    @Excel(name = "负责人邮箱")
    private String chargerEmail;

    /** 开始日期 */
    @Excel(name = "开始日期")
    private String beginDate;

    /** 计划结项日期 */
    @Excel(name = "计划结项日期")
    private String planEndDate;

    /** 实际结项日期 */
    @Excel(name = "结项日期")
    private String actualEndDate;

    @Excel(name = "终止日期")
    private String planEndDateHt;

    /** 项目状态 */
    @Excel(name = "项目状态")
    private String proStateName;

    /** 经办人 */
    @Excel(name = "经办人")
    private String transactor;

    /** 经办人电话 */
    @Excel(name = "经办人电话")
    private String transactorPhone;

    /** 到账金额 */
    @Excel(name = "到账金额（万元）")
    @JsonSerialize(using = BigDecimalSerializer.class)
    private BigDecimal feeIn = new BigDecimal(0);

    /** 成果形式 */
    @Excel(name = "成果形式")
    private String productMode;

    /** 项目成员 */
    @Excel(name = "项目成员")
    private String memberNameList;

    /** 统计归属 */
    @Excel(name = "统计归属")
    private String subClassName;

    /** 一级学科 */
    @Excel(name = "一级学科")
    private String subName;

    /** 项目来源单位 */
    @Excel(name = "项目来源单位")
    private String projectTier;

    /** 研究类别 */
    @Excel(name = "研究类别")
    private String resClassName;

    /** 社会经济服务目标 */
    @Excel(name = "社会经济服务目标")
    private String shjjmbName;

    /** 国民经济行业 */
    @Excel(name = "国民经济行业")
    private String gmjjhyName;

    /** 合作单位、合作形式 */
    @Excel(name = "合作单位")
    private String cooperateName;

    /** 备注 */
    @Excel(name = "备注")
    private String note;

    /** 项目级别 */
    @Excel(name = "项目级别")
    private String proLevelName;

    private String schoolFee;

    /** 外拨经费 */
    @Excel(name = "外拨经费（万元）")
    @JsonSerialize(using = BigDecimalSerializer.class)
    private BigDecimal outFee = new BigDecimal(0);

    /** 拨款金额 */
    @Excel(name = "拨款金额（万元）")
    @JsonSerialize(using = BigDecimalSerializer.class)
    private BigDecimal selfProvideFee = new BigDecimal(0);

    /** 到账率显示信息 */
    @Excel(name = "到账率显示信息",suffix = "%")
    private String incomeRate = "0";

    /** 执行率显示信息 */
    @Excel(name = "执行率显示信息",suffix = "%")
    private String executeRate = "0";

    /** 项目来源 */
    @Excel(name = "项目来源")
    private String proSourceName;

    /** 组织形式 */
    @Excel(name = "组织形式")
    private String formName;

    /** 课题类型 */
    @Excel(name = "课题类型")
    private String ketiTypeName;

    /** 课题性质 */
    @Excel(name = "课题性质")
    private String natureName;

    /** 依托项目名称 */
    @Excel(name = "依托项目名称")
    private String upItemName;

    /** 依托项目负责人 */
    @Excel(name = "依托项目负责人")
    private String relyingProjectLeader;

    /** 依托项目单位名称 */
    @Excel(name = "依托项目单位名称")
    private String relyingProjectUnitName;

    /** 合同有效状态 */
    @Excel(name = "合同有效状态")
    private String validStateName;

    /** 进行状态 */
    @Excel(name = "进行状态")
    private String proStatusName;

    /** 支付方式 */
    @Excel(name = "支付方式")
    private String payWayName;

    /** 合同是否回收 */
    @Excel(name = "合同是否回收")
    private String isRecoverName;

    /** 甲方名称 */
    @Excel(name = "甲方名称")
    private String buyerName;

    /** 甲方类型 */
    @Excel(name = "甲方类型")
    private String buyerTypeName;

    /** 甲方联系人 */
    @Excel(name = "甲方联系人")
    private String buyerChargerName;

    /** 甲方联系电话 */
    @Excel(name = "甲方联系电话")
    private String buyerTel;

    /** 甲方所属省份 */
    @Excel(name = "甲方所属省份")
    private String areaName;

    /** 甲方所属地市 */
    @Excel(name = "甲方所属地市")
    private String cityName;

    /** 甲方地址 */
    @Excel(name = "甲方地址")
    private String buyerAddress;

    /** 甲方邮编 */
    @Excel(name = "甲方邮编")
    private String buyerZipcode;

    /** 审核状态 */
    @Excel(name = "审核状态")
    private String checkName;

    /** 审核状态 */
    private String checkStatus;

    /** 流程id */
    @ApiModelProperty("流程id")
    private String processInstanceId;

    /** 提交类型 */
    @ApiModelProperty("提交类型 -> -1:暂存,1:提交,2:保存并通过")
    @TableField(exist = false)
    private Integer submitType;

    /** 流程节点id */
    @ApiModelProperty("流程节点id")
    @TableField(exist = false)
    private String taskId;

    /** 项目状态 */
    private String projectStatusId;

    /** 是否当前审批人 */
    @TableField(exist = false)
    private Boolean isAuditor;
}
